﻿using System.ComponentModel;

namespace Zive.Color {

    public abstract class Color<TColor, TChannels>: INotifyPropertyChanged {

        public abstract TColor Clone( );

        public abstract Illuminants Illuminant { get; set; }
        public abstract double this[TChannels channel] { get; set; }

        #region Object Members

        public abstract override string ToString( );

        #endregion

        #region INotifyPropertyChanged Members

        public abstract event PropertyChangedEventHandler PropertyChanged;
        protected abstract void OnPropertyChanged( string propertyName );

        #endregion

    }

}
